From b356d814106bd33448a141423b4059e60db9b377 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 1 May 2014 19:47:58 +0200 Subject: [PATCH] css: Split out a common function It's used in two places already, and Iwant to use it in a third one. --- gtk/gtkcssparser.c | 44 +++++++++++++++++++++++++++++++++++++++ gtk/gtkcssparserprivate.h | 5 +++++ gtk/gtkcssstringvalue.c | 38 ++------------------------------- gtk/gtkcssstylefuncs.c | 32 +--------------------------- 4 files changed, 52 insertions(+), 67 deletions(-) diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c index ab38fc9d93..16505a320e 100644 --- a/gtk/gtkcssparser.c +++ b/gtk/gtkcssparser.c @@ -1012,3 +1012,47 @@ _gtk_css_parser_resync (GtkCssParser *parser, gtk_css_parser_resync_internal (parser, sync_at_semicolon, TRUE, terminator); } + +void +_gtk_css_print_string (GString *str, + const char *string) +{ + gsize len; + + g_return_if_fail (str != NULL); + g_return_if_fail (string != NULL); + + g_string_append_c (str, '"'); + + do { + len = strcspn (string, "\"\n\r\f"); + g_string_append_len (str, string, len); + string += len; + switch (*string) + { + case '\0': + break; + case '\n': + g_string_append (str, "\\A "); + break; + case '\r': + g_string_append (str, "\\D "); + break; + case '\f': + g_string_append (str, "\\C "); + break; + case '\"': + g_string_append (str, "\\\""); + break; + case '\\': + g_string_append (str, "\\\\"); + break; + default: + g_assert_not_reached (); + break; + } + } while (*string); + + g_string_append_c (str, '"'); +} + diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h index ea6a09c9d1..5bc2ad691b 100644 --- a/gtk/gtkcssparserprivate.h +++ b/gtk/gtkcssparserprivate.h @@ -97,6 +97,11 @@ void _gtk_css_parser_resync (GtkCssParser *parser gboolean sync_at_semicolon, char terminator); +/* XXX: Find better place to put it? */ +void _gtk_css_print_string (GString *str, + const char *string); + + G_END_DECLS #endif /* __GTK_CSS_PARSER_PRIVATE_H__ */ diff --git a/gtk/gtkcssstringvalue.c b/gtk/gtkcssstringvalue.c index f97b512a09..11a893af83 100644 --- a/gtk/gtkcssstringvalue.c +++ b/gtk/gtkcssstringvalue.c @@ -65,47 +65,13 @@ static void gtk_css_value_string_print (const GtkCssValue *value, GString *str) { - char *string = value->string; - gsize len; - - if (string == NULL) + if (value->string == NULL) { g_string_append (str, "none"); return; } - g_string_append_c (str, '"'); - - do { - len = strcspn (string, "\"\n\r\f"); - g_string_append_len (str, string, len); - string += len; - switch (*string) - { - case '\0': - break; - case '\n': - g_string_append (str, "\\A "); - break; - case '\r': - g_string_append (str, "\\D "); - break; - case '\f': - g_string_append (str, "\\C "); - break; - case '\"': - g_string_append (str, "\\\""); - break; - case '\\': - g_string_append (str, "\\\\"); - break; - default: - g_assert_not_reached (); - break; - } - } while (*string); - - g_string_append_c (str, '"'); + _gtk_css_print_string (str, value->string); } static void diff --git a/gtk/gtkcssstylefuncs.c b/gtk/gtkcssstylefuncs.c index 426d3ee100..9bb5406b31 100644 --- a/gtk/gtkcssstylefuncs.c +++ b/gtk/gtkcssstylefuncs.c @@ -89,37 +89,7 @@ static void string_append_string (GString *str, const char *string) { - gsize len; - - g_string_append_c (str, '"'); - - do { - len = strcspn (string, "\"\n\r\f"); - g_string_append (str, string); - string += len; - switch (*string) - { - case '\0': - break; - case '\n': - g_string_append (str, "\\A "); - break; - case '\r': - g_string_append (str, "\\D "); - break; - case '\f': - g_string_append (str, "\\C "); - break; - case '\"': - g_string_append (str, "\\\""); - break; - default: - g_assert_not_reached (); - break; - } - } while (*string); - - g_string_append_c (str, '"'); + _gtk_css_print_string (str, string); } /*** IMPLEMENTATIONS ***/ -- 2.30.2